GPT31 - 论文精读学习笔记

Language Models are Few-Shot Learners

Basic Architectures of LLMs

Cook 2024.09.02

You are what you eat.
And I'm cooking what I eat!
:)

More food...🍜

目录

提前说明:本系列博文主要是对参考博文的解读与重述(对重点信息进行标记、或者整段摘录加深自己的记忆和理解、融合多个博文的精髓、统合不同的代表性的案例),仅做学习记录笔记使用。与君共享,希望一同进步。

 

官方项目

模型未开源,人造数据集

地址:https://github.com/openai/gpt-3/tree/master

说明:博文7 GPT-3没有开源,只能通过API调用。OpenAI官方没有明确说现在哪些API是GPT-3的,我猜测https://platform.openai.com/docs/models/gpt-base这两个文本生成模型应该是GPT-3的,但是官方也不建议继续使用GPT-3的API了,建议大家用3.5和4。因此GPT-3的主要价值就是承前启后、了解GPT系列模型的发展史了。

 

背景

OpenAI在18年、19年、20年接连发布了GPT三部曲,其模型分别被称为GPT-1、GPT-2和GPT-3。

OpenAI GPT-1, GPT-2, GPT-3

Google BERT

最近几年语言模型在NLP任务中应用广泛,通常需要在特定任务的数据集上进行微调,而参数巨大的模型在微调时存在较大代价。本文提出使用大模型预训练语言模型,在推理时进行少样本学习,以适应不同任务,减少对特定任务数据集的依赖。

 

Pre-training和fine-tuning架构存在的问题

 

 

梗概

博文7 GPT-3的框架跟GPT-1、2的差不多,但是扩大了网络参数规模,使用了更多的高质量训练数据,就使得其模型效果实现了显著提升,可以不用微调,直接通过少样本学习/上下文学习的方式,在prompt中给出任务示例,就能在新的预测样例上得到想要的结果。有些少样本学习效果比微调的SOTA模型还好。

本文没有做GPT-3微调效果的实验。

————————————————

 

 

主要贡献 本文证明了通过增大参数量就能让语言模型显著提高下游任务在Few-Shot(仅给定任务说明和少量示例)设置下的性能。

博文2作者: 证明了大规模语言模型使用元学习策略的可能 & fine-tune策略的非必要性。

 

作者在大量的NLP任务上进行实验,通过实验发现预训练后没有微调的GPT-3可以达到甚至超过经过微调的BERT模型的实验结果。

 

论文训练了一个175B的模型GPT-3,在3种设定下测试GPT-3的性能:

 

 

 

下图展示了在移除单词中多余符号任务上,模型的表现:

image-20240902174739370

 

 

概念

情境学习(in-context learning) - 上下文学习

优势:

  • 不用大规模微调数据集。

  • 效果随模型尺寸增长而编号(但是不如微调)。

  • 而且模型不会产生微调导致的分布局限问题,在通用任务上表现能力不会下降

哦?微调会产生问题的吗?额外收获!

 

在被给定的几个任务示例或一个任务说明的情况下,模型应该能通过简单预测以补全任务中其他的实例。即,情境学习要求预训练模型要对任务本身进行理解。情境学习三种分类的定义和示例如下:

few-shot相比于zero-shot为什么更有效?

在few-shot给的几个样例在新任务时会作为条件输入,相当于模型拥有了该任务更多的先验知识。

 

sparse attention

sparse attention 与传统 self-attention(称为 dense attention) 的区别在于:

  • dense attention:每个token之间两两计算attention,复杂度为 O(n2)

  • sparse attention:每个token只与其他token的一个子集计算attention,复杂度为 O(nlogn)

具体来说:

sparse attention除了相对距离不超过k以及相对距离为k, 2k, 3k, ... 的token,其他所有token的注意力都设为0,如下图所示:

image-20240903111149400

使用sparse attention的好处(主要有2点):

1 减少注意力层的计算复杂度,节约显存和耗时,从而能够处理更长的输入序列;

2 具有“局部紧密相关和远程稀疏相关”的特性:对于距离较近的上下文关注更多,对于距离较远的上下文关注较少

 

 

本文研究内容

本文训练了一个拥有175 billion参数的自回归语言模型(GPT-3),并利用两组NLP数据集和一些全新的数据集评估了模型的情境学习能力和快速适应新任务能力。

对于每一个任务,作者都测试了模型“few-shot learning”, “one-shot learning” 和 “zero-shot learning”三种条件的性能。虽然GPT-3也支持fine-tune过程,但文本并未测试。

关于GPT-3的研究结果
  1. 整体上,GPT-3在zero-shot或one-shot设置下能取得尚可的成绩,在few-shot设置下有可能超越基于fine-tune的SOTA模型。

  2. zero-shot和one-shot设置的GPT-3能在快速适应和即时推理任务(单词整理、代数运算和利用只出现过一次的单词)中拥有卓越表现。

  3. few-shot设置的GPT-3能够生成人类难以区分的新闻文章。

  4. 通常不同参数的模型在三种条件(zero-shot, one-shot, few-shot)下的性能差异变化较为平稳的,但是参数较多的模型在三种条件下的性能差异较为显著。本文猜测:大模型更适合于使用“元学习”框架。

  5. 本文发现few-shot设置的模型在自然语言推理任务(如ANLI数据集)上和机器阅读理解(如RACE或QuAC数据集)的性能有待提高。未来的研究可以聚焦于语言模型的few-shot learning部分,并关注哪些发展是最需要的。

关于data contamination的研究结果
  1. 问题定义:因为高性能模型的训练依赖于大量的网页语料如Common Crawl数据集,所以测试集中的语料可能由于已经在网页中出现过而在训练集中被模型看到过

  2. 解决方案:本文提出了一个系统化的工具来衡量data contamination情况并量化它的影响

 

解决Pre-training和fine-tuning架构存在的问题的可行的方案

 

 

测试发现当模型越大对于测试的zero-shot/one-shot/few-shot相关的效果越好。

image-20240902174739370

更大的模型拥有更强的利用情境信息能力

我们定义了一个简单的任务,要求模型移除一个单词中的随机符号。

图1.2展示了模型在给定或未给定一段文本形式的任务描述下的情境学习性能。

那根陡峭的蓝色线告诉我们从环境信息中学习任务的能力。不仅在图1.2中明显可以看出模型的性能随着增加文本形式的任务描述或者增加模型参数而增加模型性能和模型尺寸与情境样本数关系的趋势在许多其他的任务中都有体现。作者特别强调这几根数据线与fine-tune无任何关系,仅仅将增加示例数量作为限制条件。

 

image-20240902175344032

图1.3:聚合了模型在42个基准数据集上的性能

 

 

方法

博文4

  • 训练了8个不同大小的Transformer(解码器部分)语言模型,最大的包含1750亿参数(称为GPT-3);

  • 在无监督大规模文本数据集上进行预训练;

  • 在推理时,使用0样本(只描述任务)、1样本或少量样本(10-100个)作为任务实例,进行零样本、一样本和少样本学习;

  • 分布式训练、模型分割、数据分割;

  • 训练数据集从各个数据集(含Reddit数据集)进行采样,对较为低质量的Common Crawl进行权重控制,并用LSH算法做文章去重;

  • GPT-3在应用到子任务时不做任何梯度更新或是微调,主打上下文学习能力。

 

本文的预训练方式GPT-2类似,只不过用了更大的模型,数据量,多样性以及训练时长,in-context learning的方式也相似。

本文的实现与GPT-2的方法相似,预训练过程的不同只在于采用了参数更多的模型、更丰富的数据集和更长的训练的过程。本文聚焦于系统分析同一下游任务不同设置情况下,模型情境学习能力的差异。下游任务的设置有4类。

不过本文系统分析了不同设置对利用上下文学习的影响,这些设置可以看作对任务相关数据的依赖程度。

  1. Fine-tuning(FT):本文并没有训练GPT-3的微调版本,因为主要关注的是task-agnostic性能;

    FT利用成千上万的下游任务标注数据来更新预训练模型中的权重以获得强大的性能。但是,该方法1 不仅导致每个新的下游任务都需要大量的标注语料2 还导致模型在样本外预测的能力很弱。虽然GPT-3从理论上支持FT,但本文没这么做。

  2. Few-shot(FS):在预测阶段提供一些样本,但并不进行参数更新。样本的数量是10到100(window size内可容纳的样本数目)

    模型在推理阶段可以得到少量的下游任务示例作为限制条件,但是不允许更新预训练模型中的权重。

    FS过程的示例可以看本笔记图2.1点整理的案例。

    • FS的主要优点是并不需要大量的下游任务数据,同时也防止了模型在fine-tune阶段的过拟合。

    • FS的主要缺点是不仅与fine-tune的SOTA模型性能差距较大且仍需要少量的下游任务数据。

  3. One-shot(1S):仅提供一个样本;

    • 模型在推理阶段,仅得到1个下游任务示例。

      把1S独立于few-shot和zero-shot讨论是因为这种方式与人类沟通的方式最相似。

  4. Zero-shot(0S):不提供样本,只给一个用于描述任务的自然语言指令。

    • 模型在推理阶段仅得到一段以自然语言描述的下游任务说明。

    • 0S的优点是提供了最大程度的方便性、尽可能大的鲁棒性并尽可能避免了伪相关性。

    • 0S的方式是非常具有挑战的,即使是人类有时候也难以仅依赖任务描述而没有示例的情况下理解一个任务。

      但毫无疑问,0S设置下的性能是最与人类的水平具有可比性的。

GPT-3评测特点 GPT-3在评测过程中没有进行finetune,也就是没有相关的gradient梯度更新。只用到了zero-shot、one-shot、few-shot分别对应在推理时的上下文中增加的prompt样本个数。

下图是一个将英文翻译成法语任务的不同设定下的输入形式展示:

image-20240902180258026

图2.1 Zero-shot, One-shot, Few-shot和Fine-tuning之间的比较

图2.1以英文发育互译作为示例来显示了四种下游任务设置的区别

通常,预训练模型对于不同的任务会进行微调,微调过程如下(以机器翻译为例):

image-20240903103709687

而作者应用GPT-3模型并没有微调,而是尝试了三种任务:

1 zero-shot:输入问题描述,输出答案;

image-20240902180355153

图2.1(分离)

2 one-shot:输入一个问题和答案的例子,再输入一个问题,输出答案;

image-20240902180410481

图2.1(分离)

3 few-shot:输入一些问题和答案的例子,再输入一个问题,输出答案;

image-20240902180424163

图2.1(分离)

本文的不同设定并不是为了相互比较、相互替代。而是在特定基准上,提供性能采样效率之间权衡的不同问题设定。

模型和架构

整体结构和GPT-2一样,但不同的是采用了类似Sparse TransformerSparse attention,如原文表2.1,测试了不同超参的GPT-3模型。

模型结构,初始化方法,预归一化方法(预标准化方法),tokenize方法(分词方法)与GPT-2完全一致,但在Dense层和Locally Banded Sparse Attention层借鉴Sparse Transformer。

为了探究机器学习性能和模型参数的关系,我们分别训练了包含1.25亿至1750亿参数的8个模型,并把1750亿参数的模型命名为GPT-3

训练了8个不同大小的Transformer(解码器部分)语言模型,最大的包含1750亿参数(称为GPT-3)。

作者训练了一个非常大的预训练语言模型GPT-3。其最大参数量可达1750亿。模型继承了GPT-2的结构,使用了更深的层数和更多的自注意力头数。

不同模型参数设定如下表所示:

每列含义

模型名称 | 参数数量 | 模型层数*维度 | 多头数量*维度 | 批样本数 | 学习率

image-20240902180915532

所有模型的上下文窗口大小都是2048个tokens。

 

数据集

训练数据

训练数据使用由万亿单词组成的Common Crawl数据集,庞大的语料使得每一个句子只用使用一次。

原始Common Crawl的不足

原始Common Crawl的改进

 

由于我们的训练集语料来源于网络数据,同时考虑到我们的模型具有很强的性能可能记录任何一条训练数据。所以,为了防止在测试集中出现pre-train阶段的原始数据,我们尝试移除训练集和测试集重复的部分(详见第四章)。然而,较高的训练费用导致即使我们发现在数据筛选阶段有一个bug,我们也没有资金重新训练了。

 

Common Crawl dataset包含近万亿单词,遍历一遍数据集就足够训练我们最大的模型。

使用的具体训练数据的比例如下表所示:

表2.2 实验使用的数据集

数据集 | 单词数量 | 训练集占比

image-20240902181428993

 

实验

 

训练过程

批训练样本数:相关研究发现更大的模型能够使用更大的batch size。本文使用梯度噪音的大小来选择合适的batch size。

分布式训练:本文利用模型在矩阵乘法中和不同隐含层间的并行性以防止训练大模型时用尽内存。

 

评估

 

结论

在多个任务上都取得了SOTA,如下:

image-20240903112734744

image-20240903112746176

 

局限性:

影响:

 

 

思考

博文4

  • 从Transformer一直到GPT-3,模型的结构并不复杂,但其使用的训练数据量越来越大,特别是GPT大模型,词数在亿级,纯纯是力大砖飞。而且GPT-3使用了微软DGX-1集群进行训练,有知乎回答指出其使用费用在百万人民币以上,这并非普通人所能承受。

    因此自己做预训练基本上不太可能了,可能需要转而考虑利用现成的体量较小的预训练模型进行微调

  • 如果需要做微调,那么如何获取打了标签的网络设备配置文件。配置文件本身,由于配置文件备份或是版本管理软件,可以从ISP或是企业获取,但数据量可能不够用。对于打标签,这可能需要建立一套配置评估体系,实现对配置文件的自动评估,或是结合网络管理人员的领域知识进行评估。总之,这是一个要解决的问题。

我的总结:

  • 训练数据一直在增大;

    要能获取数据;

  • 训练设备昂贵,个人使用可能还是要在体量小的模型上进行微调;

    要学微调技术;

    微调技术需要哪些要素?(see: pp012~pp020)

 

 

 

参考博文

  1. 【论文阅读】Language Models are Few-Shot Learners(GPT-3)

    点评:★★★☆☆
    这篇博文主要是对原文的概念进行了解读,但是有点散。无符号序列用的很突兀,没有感觉到行文的逻辑感和层次感。同时给了我一些其他方面的思考:我在写的时候,不能这样记录。要更有层次感才能方便我自己二次观看、复习

  2. GPT-3阅读笔记:Language Models are Few-Shot Learners

    点评:★★★★☆
    这篇文章主要对全文的信息有一个整体的梳理,语言通俗易懂,案例也比较好

  3. Language Models are Few-Shot Learners

    点评:★★★☆☆
    这篇文章很短,对整个paper的核心进行了一点点的要点梳理。总的来说有助于理解文章,所以三颗星!

  4. 阅读笔记|Language Models are Few-Shot Learners

    点评:★★★☆☆
    这篇文章主要是对背景和整篇paper的主体进行了文字描述,辅助我理解了更多的背景知识,值得三颗星

  5. GPT-3《Language Models are Few-Shot Learners》解读

    点评:★★★★☆
    虽然这篇文章很短,但是给出了非常干的干货,❶ 有对比描述;❷ 有新概念解释。我觉得很赞,给出四颗星

  6. GPT-3(Language Models are Few-Shot Learners)论文阅读

    点评:★★★☆☆
    是对之前博文的一些重述,不过增加了一些新的补充,例如Prompt就是in-context learning,这是之前的几个博文没讲到的,果然,博文看多了是有帮助的

  7. Re65:读论文 GPT-3 Language Models are Few-Shot Learners

    点评:★★★☆☆
    提供了一些背景知识,重要的是有一个git项目的链接和说明,让后期的复现有了基本参考。总体来说,描述的没有太大的逻辑,排版也略差,但是,万千若水,一瓢解渴就好了

 

原文目录

1 Introduction 3 2 Approach 6 2.1 Model and Architectures 8 2.2 Training Dataset 8 2.3 Training Process 9 2.4 Evaluation 10 3 Results 10 3.1 Language Modeling, Cloze, and Completion Tasks 11 3.2 Closed Book Question Answering 13 3.3 Translation 14 3.4 Winograd-Style Tasks 16 3.5 Common Sense Reasoning 17 3.6 Reading Comprehension 18 3.7 SuperGLUE 18 3.8 NLI 20 3.9 Synthetic and Qualitative Tasks 21 4 Measuring and Preventing Memorization Of Benchmarks 29 5 Limitations 33 6 Broader Impacts 34 6.1 Misuse of Language Models 35 6.2 Fairness, Bias, and Representation 36 6.3 Energy Usage 39 7 Related Work 39 8 Conclusion 40 A Details of Common Crawl Filtering 43 B Details of Model Training 43 C Details of Test Set Contamination Studies 43 D Total Compute Used to Train Language Models 46 E Human Quality Assessment of Synthetic News Articles 46 F Additional Samples from GPT-3 48 G Details of Task Phrasing and Specifications 50 H Results on All Tasks for All Model Sizes 63

 

博文免责声明

  1. 本条博文信息主要整合自网络,部分内容为自己的理解写出来的,如有断章截句导致不正确或因个人水平有限未能详尽正确描述的地方,敬请各位读者指正;

  2. 引用出处可能没有完全追溯到原始来源,如因此冒犯到原创作者,请联系本人更正/删除;

  3. 博文的发布主要用于自我学习,其次希望帮助到有共同疑惑的朋友。

欢迎随时联系讨论,一起成长进步。

 


1 Brown T B. Language models are few-shot learners[J]. arXiv preprint arXiv:2005.14165, 2020.